package com.nablasystems.suag.domain;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name="inscripcion_a_cursado")
public class InscripcionCursado {
	@Id
	@Column(name="idInscripcion")
	@GeneratedValue
	private int idInscripcion;
	
	@ManyToOne
	@JoinColumn(name="idAlumno")
	private Alumno alumno;
	
	@ManyToOne
	@JoinColumn(name="idCurso")
	private Curso curso;
	
	@Column(name="nota1erParcial")
	private String nota1erParcial;
	
	@Column(name="nota2erParcial")
	private String nota2erParcial;
	
	@Column(name="nota3erParcial")
	private String nota3erParcial;
	
	@Column(name="notaRecuperatorio")
	private String notaRecuperatorio;
	
	@Column(name="fechaCarga1erParcial")
	private Date fechaCarga1erParcial;
	
	@Column(name="fechaCarga2erParcial")
	private Date fechaCarga2erParcial;
	
	@Column(name="fechaCarga3erParcial")
	private Date fechaCarga3erParcial;
	
	@Column(name="fechaCargaRecuperatorio")
	private Date fechaCargaRecuperatorio;
	
	@Column(name="nota")
	private Integer nota;
	
	@Column(name="fechaInscripcion")
	private Date fechaInscripcion;
	
	@ManyToOne
	@JoinColumn(name="idEstadoAcademico")
	private EstadoAcademico estadoAcademico;
	
	@OneToMany(fetch = FetchType.LAZY, mappedBy="inscripcionCursado",cascade= CascadeType.ALL)
	private Set<InscripcionExamenFinal> examenesInscriptos = new HashSet<InscripcionExamenFinal>();

	public int getIdInscripcion() {
		return idInscripcion;
	}

	public void setIdInscripcion(int idCurso) {
		this.idInscripcion = idCurso;
	}

	public Alumno getAlumno() {
		return alumno;
	}

	public void setAlumno(Alumno alumno) {
		this.alumno = alumno;
	}

	public Curso getCurso() {
		return curso;
	}

	public void setCurso(Curso curso) {
		this.curso = curso;
	}

	public String getNota1erParcial() {
		return nota1erParcial;
	}

	public void setNota1erParcial(String nota1erParcial) {
		this.nota1erParcial = nota1erParcial;
	}

	public String getNota2erParcial() {
		return nota2erParcial;
	}

	public void setNota2erParcial(String nota2erParcial) {
		this.nota2erParcial = nota2erParcial;
	}

	public String getNota3erParcial() {
		return nota3erParcial;
	}

	public void setNota3erParcial(String nota3erParcial) {
		this.nota3erParcial = nota3erParcial;
	}

	public String getNotaRecuperatorio() {
		return notaRecuperatorio;
	}

	public void setNotaRecuperatorio(String notaRecuperatorio) {
		this.notaRecuperatorio = notaRecuperatorio;
	}
	
	public String[] getNotas() {
		String[] salida=new String[4];
		if(this.nota1erParcial==null) {salida[0]="Sin Nota";}else{salida[0]=this.nota1erParcial;}
		if(this.nota2erParcial==null) {salida[1]="Sin Nota";}else{salida[1]=this.nota2erParcial;}
		if(this.nota3erParcial==null) {salida[2]="Sin Nota";}else{salida[2]=this.nota3erParcial;}
		if(this.notaRecuperatorio==null) {salida[3]="Sin Nota";}else{salida[3]=this.notaRecuperatorio;}
		return salida;
	}

	public Date getFechaCarga1erParcial() {
		return fechaCarga1erParcial;
	}

	public void setFechaCarga1erParcial(Date fechaCarga1erParcial) {
		this.fechaCarga1erParcial = fechaCarga1erParcial;
	}

	public Date getFechaCarga2erParcial() {
		return fechaCarga2erParcial;
	}

	public void setFechaCarga2erParcial(Date fechaCarga2erParcial) {
		this.fechaCarga2erParcial = fechaCarga2erParcial;
	}

	public Date getFechaCarga3erParcial() {
		return fechaCarga3erParcial;
	}

	public void setFechaCarga3erParcial(Date fechaCarga3erParcial) {
		this.fechaCarga3erParcial = fechaCarga3erParcial;
	}

	public Date getFechaCargaRecuperatorio() {
		return fechaCargaRecuperatorio;
	}

	public void setFechaCargaRecuperatorio(Date fechaCargaRecuperatorio) {
		this.fechaCargaRecuperatorio = fechaCargaRecuperatorio;
	}

	public Integer getNota() {
		return nota;
	}

	public void setNota(Integer nota) {
		this.nota = nota;
	}

	public Date getFechaInscripcion() {
		return fechaInscripcion;
	}

	public void setFechaInscripcion(Date fechaInscripcion) {
		this.fechaInscripcion = fechaInscripcion;
	}

	public EstadoAcademico getEstadoAcademico() {
		return estadoAcademico;
	}

	public void setEstadoAcademico(EstadoAcademico estadoAcademico) {
		this.estadoAcademico = estadoAcademico;
	}
	
	public Set<InscripcionExamenFinal> getExamenesInscriptos() {
		return examenesInscriptos;
	}

	public void setExamenesInscriptos(Set<InscripcionExamenFinal> examenesInscriptos) {
		this.examenesInscriptos = examenesInscriptos;
	}

	@Override
	public String toString() {
		return "InscripcionCursado [idInscripcion=" + idInscripcion
				+ ", alumno=" + alumno + ", curso=" + curso
				+ ", fechaInscripcion=" + fechaInscripcion
				+ ", estadoAcademico=" + estadoAcademico + "]";
	}
	
}
